--1删除列表
--1.1优惠券ID
local voucherId = ARGV[1]
--1.2 用户ID
local userId = ARGV[2]

--1.3 订单id
local orderID = ARGV[3]

--2.数据key
--2.1库存key
local stockKey = 'seckill:stock:' .. voucherId
--2.2订单key
local orderKey = 'seckill:order:' .. voucherId

--3.脚本业务
--3.1判断库存是否充足
--字符串不能跟数字进行比对,需要使用tonumber转为数字
if (tonumber(redis.call('get', stockKey)) <= 0) then
    --3.2库存不足返回1
    return 1
end
--3.3判断用户是否下单
if (redis.call('sismember', orderKey, userId) == 1) then
    --3.4存在，说明用户重复下单，返回2
    return 2
end
--3.5扣库存
redis.call('incrby', stockKey, -1)
--3.6下单保存用户
redis.call('sadd', orderKey, userId)

-- 3.7 发送消息到队列中 XADD stream.order * k1 v1 k2 v2
redis.call("xadd", "stream.orders", "*", "userId", userId, "voucherId", voucherId, "id", orderID)
return 0